from django.shortcuts import render
from django.shortcuts import redirect
from django.http import HttpResponse
from bson import json_util
from django.contrib.auth.decorators import login_required
from django.contrib.auth.decorators import permission_required
from bson.objectid import ObjectId
import time
import json


#将Mongodb中ObjectId转换成unix时间戳
def timestamp_from_objectid(objectid):
     result = 0
     try:
      result = time.mktime(objectid.generation_time.timetuple())
     except:
      pass
     return result

def wenjuanbianhao(): #得到问卷编号
    import pymongo
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["question"]
    mycol = mydb["data1"]

    for x in mycol.find({}, {'_id': 1}):  # 只查询Objectid
        print(timestamp_from_objectid(ObjectId(str(list(x.values())[0]))))  # 从Objectid中获取unix时间戳

    return 0


@login_required
@permission_required(perm='wenjuan.view_HZwenjuan')  #判断用户有无查看患者问卷权限，如果没有就不能查看，对应left_menu.html中的perms.wenjuan.view_wenjuan
def wenjuan1(request): #基线脑出血问卷
    import pymongo
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["question"]
    mycol = mydb["data1"]
    # mycol = mydb["questionnaire1"]
    questionnaire = []
    # question = []
    for x in mycol.find({}, {'_id': 0, '患者姓名': 1, '患者性别': 1, '患者出生日期': 1, '患者身份证号码': 1}):  # 查询特定字段
        # for x in mycol.find():
        # question.append(list(x))
        questionnaire.append(x)


    file_path = "./static/json/wenjuan5.json"
    with open(file_path, 'r', encoding='UTF-8') as f:
        print("knmfkdnsjknjknjkdsnjkndsjnkjknjkd")
        print(json.load(f))  #转换后的字典
        print("knmfkdnsjknjknjkdsnjkndsjnkjknjkd")

    wenjuan5_content = {'与患者关系': '',
                        '是否同意接受该调查': '',
                        '填表人信息': '',
                        '所在的省0': '',
                        '所在的市0': '',
                        '所在的县或区0': '',
                        '抽样点编号': '',
                        '患者姓名': '',
                        '患者性别': '',
                        '患者出生日期': '',
                        '患者身份证号码': '',
                        '身高': '',
                        '体重': '',
                        '民族': '',
                        '户籍地址所在的省': '',
                        '户籍地址所在的市': '',
                        '户籍地址所在的县(区)': '',
                        '户籍地址所在的镇(乡)': '',
                        '户籍地址所在的街道(村)': '',
                        '户籍地址所在的居委会(组)': '',
                        '现居住址所在的省': '',
                        '现居住址所在的市': '',
                        '现居住址所在的县(区)': '',
                        '现居住址所在的镇(乡)': '',
                        '现居住址所在的街道(村)': '',
                        '现居住址所在的居委会(组)': '',
                        '家庭人口数': '',
                        '婚姻': '',
                        '文化程度': '',
                        '职业': '',
                        '家庭人均月收入': '',
                        '医保类型': '',
                        '是否办有医疗救助': '',
                        '是否被医生诊断为脑出血': '',
                        '首次被确诊为脑出血的时间': '',
                        '脑出血是否复发': '',
                        '发病次数': '',
                        '最近一次发病时间': '',
                        '亲属中是否患有脑出血': '',
                        '患病亲属为': '',
                        '患病亲属为-Comment': '',
                        '目前就诊医院': '',
                        '病案号': '',
                        '入院时间': '',
                        '入院24小时内收缩压(mmHg)': '',
                        '入院24小时内舒张压(mmHg)': '',
                        '心率': '',
                        '脉搏': '',
                        '入院时GCS评分分值(3-15)': '',
                        '入院时NIHSS评分分值(0-42)': '',
                        '是否通过医院绿色通道入院': '',
                        '是否行外科手术治疗': '',
                        '手术方式': '',
                        '脑出血发病病因': '',
                        '脑出血发病时首次CT检查的时间': '',
                        '脑出血类型': '',
                        '脑出血部位': '',
                        '是否破入脑室系统': '',
                        '首次头部CT检查脑出血量': '',
                        '头部CT复查是否存在血肿扩大': '',
                        '脑出血发病以前是否有过脑梗死': '',
                        '首次脑梗死发病时间': '',
                        '是否规律服用抗血小板聚集药物': '',
                        '药物类型': '',
                        '是否知道自己的血压': '',
                        '既往有无高血压病史': '',
                        '高血压病史年限': '',
                        '最高血压1': '',
                        '最高血压2': '',
                        '是否规律测量血压': '',
                        '血压控制范围1': '',
                        '控制范围2': '',
                        '是否规律服用降压药': '',
                        '是否测量过血脂': '',
                        '血脂范围': '',
                        '是否规律服用调脂药': '',
                        '药物类型2': '',
                        '目前血脂是否正常': '',
                        '以前是否测量血糖': '',
                        '血糖范围': '',
                        '是否规律监测血糖': '',
                        '血糖控制范围1': '',
                        '血糖控制范围2': '',
                        '是否规律服用降糖药': '',
                        '是否使用胰岛素': '',
                        '是否存在糖尿病慢性并发症': '',
                        '何种并发症': '',
                        '何种并发症-Comment': '',
                        '心房颤动病史': '',
                        '是否规律使用抗凝药物': '',
                        '使用时长1': '',
                        '药物类型4': '',
                        '药物类型4-Comment': '',
                        '是否定期监测凝血功能': '',
                        '冠心病病史': '',
                        '是否规律服用药物': '',
                        '长期服用其他药物史': '',
                        '长期服用其他药物史-Comment': '',
                        '长期服用药物的具体情况': '',
                        '夜间睡觉是否打呼噜': '',
                        '吸烟史': '',
                        '烟龄': '',
                        '吸烟量': '',
                        '发病前是否戒烟': '',
                        '已戒烟多少年': '',
                        '是否被动吸烟': '',
                        '饮酒史': '',
                        '酒龄': '',
                        '饮酒种类': '',
                        '发病前是否戒酒': '',
                        '已戒酒多少年': '',
                        '体力活动': '',
                        '晚上一般几点睡觉': '',
                        '晚上一般睡眠时长': '',
                        '膳食习惯': '',
                        '食用水产品（包括鱼、虾、贝类、海带）等的频率是': '',
                        '食用蔬菜的频率是': '',
                        '食用水果的频率是': '',
                        '食用奶及奶制品的频率是': '',
                        '食用辣椒的频率是': '',
                        '您食用熏制食品（包括熏肉、熏肝、熏鱼、熏蛋、熏豆腐干等）的频率是': '',
                        '您食用腌制食品（包括腌制蘑菇、腌制腊肉、腌制腊肠、腌制酸菜、腌制咸鱼、腌制草莓、腌制香菜心、腌制生姜等）的频率是': '',
                        '您家庭使用的油为': '',
                        '您家庭使用的油为-Comment': '',
                        '油1': '',
                        '血常规检测': '',
                        '血生化检测': '',
                        '凝血常规检测': '',
                        '心电图结果': '',
                        '颈部血管彩超结果': '',
                        '头部CT/CTA结果：': '',
                        '戒烟教育': '',
                        '限酒教育': '',
                        '控制体重教育': '',
                        '低盐饮食教育': '',
                        '低脂饮食教育': '',
                        '糖尿病健康教育': '',
                        '是否接受过脑卒中（即中风）教育和/或以下材料': '',
                        '获取上述信息的渠道': '',
                        '获取上述信息的渠道-Comment': '',
                        '调查员签字': '',
                        '调查日期': ''}



    # excelTitle = []
    # for x in mycol.find({}, {'_id': 0}):  # 查询特定字段
    #     excelTitle.append(list(x))
    #     if len(excelTitle) > 2:
    #         break
    #
    # print(excelTitle[0])
    print(list(wenjuan5_content))
    # print(question[0])
    print(questionnaire)

    return render(request,'wenjuan/wenjuan1.html',{"questionnaire":json_util.dumps(questionnaire),"question":json_util.dumps(['患者姓名', '患者性别', '患者出生日期', '患者身份证号码']),"excelTitle":json_util.dumps(list(wenjuan5_content))})

@login_required
def ExportWenjuan1(request): #将基线脑出血患者问卷导出成excel
    import pymongo
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["question"]
    mycol = mydb["data1"]
    # mycol = mydb["questionnaire1"]
    answer = []

    print(request.POST)  # 输出被django处理过的数据形式
    selectRaw = request.POST.get('selectRaw')  # 获取选择的行的编号
    selectRaw = selectRaw.split(",")
    tj = selectRaw[:-1]
    # print(selectRaw)
    # print(len(selectRaw))
    # print(tj)
    # print(len(tj))

   #问卷no5的
    wenjuan5_content={ '与患者关系': '',
  '是否同意接受该调查': '',
  '填表人信息': '',
  '所在的省0': '',
  '所在的市0': '',
  '所在的县或区0': '',
  '抽样点编号': '',
  '患者姓名': '',
  '患者性别': '',
  '患者出生日期': '',
  '患者身份证号码': '',
  '身高': '',
  '体重': '',
  '民族': '',
  '户籍地址所在的省': '',
  '户籍地址所在的市': '',
  '户籍地址所在的县(区)': '',
  '户籍地址所在的镇(乡)': '',
  '户籍地址所在的街道(村)': '',
  '户籍地址所在的居委会(组)': '',
  '现居住址所在的省': '',
  '现居住址所在的市': '',
  '现居住址所在的县(区)': '',
  '现居住址所在的镇(乡)': '',
  '现居住址所在的街道(村)': '',
  '现居住址所在的居委会(组)': '',
  '家庭人口数': '',
  '婚姻': '',
  '文化程度': '',
  '职业': '',
  '家庭人均月收入': '',
  '医保类型': '',
  '是否办有医疗救助': '',
  '是否被医生诊断为脑出血': '',
  '首次被确诊为脑出血的时间': '',
  '脑出血是否复发': '',
  '发病次数': '',
  '最近一次发病时间': '',
  '亲属中是否患有脑出血': '',
  '患病亲属为': '',
  '患病亲属为-Comment': '',
  '目前就诊医院': '',
  '病案号': '',
  '入院时间': '',
  '入院24小时内收缩压(mmHg)': '',
  '入院24小时内舒张压(mmHg)': '',
  '心率': '',
  '脉搏': '',
  '入院时GCS评分分值(3-15)': '',
  '入院时NIHSS评分分值(0-42)': '',
  '是否通过医院绿色通道入院': '',
  '是否行外科手术治疗': '',
  '手术方式': '',
  '脑出血发病病因': '',
  '脑出血发病时首次CT检查的时间': '',
  '脑出血类型': '',
  '脑出血部位': '',
  '是否破入脑室系统': '',
  '首次头部CT检查脑出血量': '',
  '头部CT复查是否存在血肿扩大': '',
  '脑出血发病以前是否有过脑梗死': '',
  '首次脑梗死发病时间': '',
  '是否规律服用抗血小板聚集药物': '',
  '药物类型': '',
  '是否知道自己的血压': '',
  '既往有无高血压病史': '',
  '高血压病史年限': '',
  '最高血压1': '',
  '最高血压2': '',
  '是否规律测量血压': '',
  '血压控制范围1': '',
  '控制范围2': '',
  '是否规律服用降压药': '',
  '是否测量过血脂': '',
  '血脂范围': '',
  '是否规律服用调脂药': '',
  '药物类型2': '',
  '目前血脂是否正常': '',
  '以前是否测量血糖': '',
  '血糖范围': '',
  '是否规律监测血糖': '',
  '血糖控制范围1': '',
  '血糖控制范围2': '',
  '是否规律服用降糖药': '',
  '是否使用胰岛素': '',
  '是否存在糖尿病慢性并发症': '',
  '何种并发症': '',
  '何种并发症-Comment': '',
  '心房颤动病史': '',
  '是否规律使用抗凝药物': '',
  '使用时长1': '',
  '药物类型4': '',
  '药物类型4-Comment': '',
  '是否定期监测凝血功能': '',
  '冠心病病史': '',
  '是否规律服用药物': '',
  '长期服用其他药物史': '',
  '长期服用其他药物史-Comment': '',
  '长期服用药物的具体情况':'',
  '夜间睡觉是否打呼噜': '',
  '吸烟史': '',
  '烟龄': '',
  '吸烟量': '',
  '发病前是否戒烟': '',
  '已戒烟多少年': '',
  '是否被动吸烟': '',
  '饮酒史': '',
  '酒龄': '',
  '饮酒种类': '',
  '发病前是否戒酒': '',
  '已戒酒多少年': '',
  '体力活动': '',
  '晚上一般几点睡觉': '',
  '晚上一般睡眠时长': '',
  '膳食习惯': '',
  '食用水产品（包括鱼、虾、贝类、海带）等的频率是': '',
  '食用蔬菜的频率是': '',
  '食用水果的频率是': '',
  '食用奶及奶制品的频率是': '',
  '食用辣椒的频率是': '',
  '您食用熏制食品（包括熏肉、熏肝、熏鱼、熏蛋、熏豆腐干等）的频率是': '',
  '您食用腌制食品（包括腌制蘑菇、腌制腊肉、腌制腊肠、腌制酸菜、腌制咸鱼、腌制草莓、腌制香菜心、腌制生姜等）的频率是': '',
  '您家庭使用的油为': '',
  '您家庭使用的油为-Comment': '',
  '油1': '',
  '血常规检测': '',
  '血生化检测': '',
  '凝血常规检测': '',
  '心电图结果': '',
  '颈部血管彩超结果': '',
  '头部CT/CTA结果：': '',
  '戒烟教育': '',
  '限酒教育': '',
  '控制体重教育': '',
  '低盐饮食教育': '',
  '低脂饮食教育': '',
  '糖尿病健康教育': '',
  '是否接受过脑卒中（即中风）教育和/或以下材料': '',
  '获取上述信息的渠道': '',
  '获取上述信息的渠道-Comment': '',
  '调查员签字': '',
  '调查日期': '' }

    print(wenjuan5_content)
    print("ysdyugdsyau")
    for id in tj:
        # print(id)
        for x in mycol.find({"患者身份证号码": id}, {'_id': 0}):
            # {**excelTitle,**x}:Python3中两字典的合并与更新,使得导出问卷excel的表头是一致的,同时把调查问卷json的所有value都转换成字符串，这样就能保证导出excel没有数据缺失
            # answer.append(list({**wenjuan5_content,**x}.values()))
            answer.append([str(i) for i in list({**wenjuan5_content,**x}.values())])
            # print([str(i) for i in list({**wenjuan5_content,**x}.values())])
            # print(list({**wenjuan5_content,**x}.values()))
            # answer.append(list(x.values()))
            # print(x)
            # print("111111111")
            # #{**excelTitle,**x}:Python3中两字典的合并与更新,使得导出问卷excel的表头是一致的
            # print(list({**wenjuan5_content,**x}.values()))
            # print("222222222")

    print(answer)
    print(json_util.dumps(answer))
    return HttpResponse(json_util.dumps(answer))  # answer的第一条记录为question

@login_required
def DelWenjuan1(request): #删除基线脑出血患者问卷中的调查记录
    import pymongo
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["question"]
    mycol = mydb["data1"]
    # mycol = mydb["questionnaire1"]
    answer = []
    selectRaw = request.POST.get('selectRaw')  # 获取选择的行的编号
    selectRaw = selectRaw.split(",")
    tj = selectRaw[:-1]

    for id in tj:
        mycol.delete_one({"患者身份证号码":id})

    for x in mycol.find():
        answer.append(list(x.values()))

    print(answer)

    return HttpResponse(json_util.dumps(answer))  # 验证删除是否成功

